package com.wang.aliyun.controller;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectResult;
import com.wang.aliyun.service.FileService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.FileURLMapper;

import javax.annotation.Resource;
import java.io.*;
import java.util.List;

/**
 * @author: wang
 * @date: 2021/7/30 20:40
 * @description:
 */
@Controller
public class FileUploadController {
    /*LTAI5t6gP6eogVesu1Bjqcsv
mk7bJQBtxzAPWPSAOnm0SKMnGEog9S*/

    @Resource
    private FileService fileService;


    @RequestMapping("upload")
    public String upload(MultipartFile file, Model m) throws IOException {
        String name = file.getOriginalFilename();
        System.out.println(name);
        System.out.println(name);
        System.out.println(name);
        // 将文件名存入数据库
        int i = fileService.saveFileName(name);
        if ( i < 1){
            throw new RuntimeException("文件名存入失败");
        }


        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = "https://oss-cn-shenzhen.aliyuncs.com";
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "LTAI5t6gP6eogVesu1Bjqcsv";
        String accessKeySecret = "mk7bJQBtxzAPWPSAOnm0SKMnGEog9S";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        // 填写Byte数组。
        byte[] content = file.getBytes();

        // 依次填写Bucket名称（例如examplebucket）和Object完整路径（例如exampledir/exampleobject.txt）。Object完整路径中不能包含Bucket名称。
        PutObjectResult result = ossClient.putObject("wuqixiaowei", file.getOriginalFilename(), new ByteArrayInputStream(content));

        // 关闭OSSClient。
        ossClient.shutdown();

        // todo 查询所有的图片名，返回一个集合，然后再在前端根据名称下载图片或者文件。想法整个预览
        List<String> fileNames =  fileService.queryAllFileName();
        m.addAttribute("fileNames",fileNames);
        return "show";
    }




//    public static void main(String[] args) throws IOException {
//        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
//        String endpoint = "https://oss-cn-shenzhen.aliyuncs.com";
//// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
//        String accessKeyId = "LTAI5t6gP6eogVesu1Bjqcsv";
//        String accessKeySecret = "mk7bJQBtxzAPWPSAOnm0SKMnGEog9S";
//
//// 创建OSSClient实例。
//        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//
//// 填写Byte数组。
//        File file = new File("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\收藏壁纸\\动漫\\忘了名字了.jpg");
//        FileInputStream fis = new FileInputStream(file);
//        int length = (int) file.length();
//        byte[] content = new byte[length];
//        fis.read(content);
//        fis.close();
//// 依次填写Bucket名称（例如examplebucket）和Object完整路径（例如exampledir/exampleobject.txt）。Object完整路径中不能包含Bucket名称。
//        PutObjectResult result = ossClient.putObject("wuqixiaowei", file.getName(), new ByteArrayInputStream(content));
//        System.out.println(result);
//
//// 关闭OSSClient。
//        ossClient.shutdown();
//    }
}
